Downloading and uploading data in information networks

ABSTRACT

A method of downloading or uploading data via a client-server communications network, which network comprises a plurality of clients (A, B,  8, 9, 10 ) each having a local cache storing data downloaded via the network. The method comprises responding to a data request made to the network by a first client (A,  8 ) by uploading data from the cache of a second client (B,  9, 10 ) and transmitting that data across the network to the first client (A,  8 ). Also disclosed are client-server networks operating in accordance with the method and to the related servers ( 3 ), client terminals (A, B,  8, 9, 10 ), browsers loaded on client terminals, and plug-ins for such terminals and browsers.

BACKGROUND OF THE INVENTION

[0001] This invention relates to downloading data from or uploading datato information sources via information networks and, in preferredembodiments, relates to techniques for retrieving files such as webpages and other web content in an Internet environment.

[0002] Currently, the Internet operates under the hypertext transferprotocol (HTTP) and embodies a client-server architecture. The vastmajority of Internet access—about 99%—is achieved via web browserprograms, predominantly Netscape or Microsoft Internet Explorer, whosetrade marks are acknowledged.

[0003] Existing download techniques will be discussed later withreference to FIGS. 1(a) and 1(b) but, typically, the client is a user'sterminal such as a PC, a suitably-adapted (e.g. Wireless Access Protocolor WAP) mobile telephone or other communications device running abrowser program. This terminal downloads and displays a desired HTML webpage held on a web server by using a communications network to send arequest for that web page across the Internet to the appropriate server.The server responds by sending the requested web page back across theInternet and from there to the client via the communications network towhich the user's terminal is connected.

[0004] Whilst a web page is mentioned by way of example, other webcontent files such as .gif, .jpg or .mpg files can be downloaded in thesame way.

[0005] The client and server can be in direct contact across theInternet via the communications network or can be connected via a proxyserver acting between the client and the server. The purpose of theproxy server is to cache some web pages, usually as a result of previoususer requests, so that future user requests for the cached web pages canbe satisfied without connecting to the server. If the user requests aweb page that is not cached on the proxy server, the proxy serverforwards the request to the server and receives and forwards therequested page from the server to the client. However, in general, lesstraffic needs to connect to the server and so the average download timeis decreased.

[0006] Cache techniques are, of course, commonplace in the Internet art.Most commonly, when a server or a proxy server responds to a user'srequest by sending a web page back to the client, that page may becached on the user's terminal so that future user requests for the sameweb page can be satisfied immediately without having to connect to theserver or the proxy server at all. Nevertheless, the user's terminalcannot cache every page that the user ever downloads, and the user willnaturally wish to update cached web pages and to download new web pagesfrom time to time. This means that efficient downloading remainsparamount.

[0007] Despite ongoing efforts to speed Internet usage with fastermodems and high-speed network technologies such as ADSL and opticalcable, the majority of Internet users are burdened with slow downloadtimes. Even if an Internet user invests heavily in a fast modem and insubscribing to a high-speed communications network, the user may stillsuffer delays due to the architecture of the Internet itself and thenature of its components. Particular problems arise due to the limitedspeed with which servers can operate and the restricted bandwidth of thenumerous communications channels that lie between the server and theclient. There is also the problem of unreliability, meaning that if aserver is down and no cached copy of the desired web page is accessibleelsewhere, the user may have to wait until the server is operationalagain.

[0008] The slowness and unreliability of downloads makes the Internetless useful and appealing than it could and should be, to the detrimentof users and also those who seek to provide information to users. Recentresearch suggests that, on average, a user will wait just eight secondsfor a web page to download before moving on elsewhere. If that happens,the user misses information that could have been beneficial and theprovider of the web page misses an opportunity to convey thatinformation, possibly resulting in lost business and decreasedadvertising revenues. The problem is likely to get worse until effortsto upgrade the Internet and its associated communications technologiesbegin to outweigh the explosion of new Internet users and the movetowards ‘always-on’ Internet access.

SUMMARY OF THE INVENTION

[0009] Broadly, this invention contemplates a method of downloading datavia a client-server communications network, which network comprises aplurality of clients each having a local cache storing data downloadedvia the network. The method comprises responding to a data request madeto the network by a first client by uploading data from the cache of asecond client and transmitting that data across the network to the firstclient.

[0010] In use of a first architecture, the invention may be defined as amethod of downloading or uploading data via a client-servercommunications network that includes a server and a plurality ofclients, each client having a local cache storing data downloaded viathe network, the method comprising a requesting client (8) sending arequest for data to the server, and the server responding by sending therequested data to the requesting client (8) or referring the requestingclient (8) to a proxy server client that holds the requested data in itslocal cache, the requesting client (8) then downloading the requesteddata from the cache of the proxy server client across the network.

[0011] This first architecture is embodied in a client-servercommunications network including a server and a plurality of clients,each client having a local cache storing data downloaded via the networkand the server having means for responding to a client that sends a datarequest to the server, wherein the server is adapted to send therequested data to the requesting client (8) or to refer the requestingclient (8) to a proxy server client that holds the requested data in itslocal cache.

[0012] The server of the first architecture includes means forresponding to a client that sends a data request to the server and isadapted to send the requested data to the requesting client or to referthe requesting client to a proxy server client that holds the requesteddata in a local cache of data downloaded via the network. The firstarchitecture also involves a client terminal for connection to a server,or a browser for such a client terminal, including selection means forchoosing between a plurality of proxy server clients if the server isunable to respond to a data request from the client within a targetperiod or at all, and means for downloading the requested data from achosen proxy server client.

[0013] In use of a second architecture, the invention may be defined asa method of downloading or uploading data via a client-servercommunications network that includes a server and a plurality ofclients, each client having a local cache storing data downloaded viathe network, the method comprising a requesting client broadcasting adata request over the network to the server and/or one or more otherclients or connecting to at least one client whose address is on a proxylist held by the requesting client, the requesting client thendownloading the requested data across the network from the cache of aproxy server client that is caching the requested data.

[0014] This second architecture is embodied in a client-servercommunications network including a server and a plurality of clients,each client having a local cache storing data downloaded via thenetwork, wherein a requesting client is adapted to broadcast a datarequest over the network to the server and/or one or more other clientsor to connect to at least one client whose address is on a proxy listheld by the requesting client, and includes means for downloading therequested data across the network from the cache of a proxy serverclient that is caching the requested data.

[0015] The second architecture involves a client terminal for connectionto a server, or a browser for such a client terminal, includingselection means for choosing among a plurality of proxy server clientsthe proxy server client from which it will download the requested data,and means for downloading the requested data from a chosen proxy serverclient.

[0016] In an Internet context, the network is the Internet, the clientsare user terminals running web browsers and the respective local cachesare associated with the browsers on the user terminals that act as proxyserver clients. The invention capitalizes upon the facts that (i) thevast majority of Internet access is done through web browsers that havebecome a de facto standard, such as Netscape and Microsoft InternetExplorer and (ii) those millions of web browsers cache a great deal ofinformation about the web sites that people most often look at.

[0017] A key advantage of the invention, in preferred embodiments, isthat it can be deployed and propagated among a large number of users asa plug-in for their existing browsers. So, whilst a simple module wouldhave to be added to the server, users would not have to installcompletely new browsers but instead could upgrade their existing systemsusing simple download techniques with which most users are familiar. Theinvention therefore extends to software plug-ins for a client terminalor for a browser loaded on that client terminal and being programmed toadapt a terminal or a browser in accordance with the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

[0018] In order that this invention can be more readily understood,reference will now be made, by way of example, to the accompanyingdrawings in which:

[0019]FIG. 1(a) and FIG. 1(b) are block diagrams showing existing waysin which a web page may be downloaded via the Internet, FIG. 1(a)showing a simple client-server architecture and FIG. 1(b) showing avariant in which a proxy server acts between the client and the server;

[0020]FIG. 2 is a block diagram showing how, in a preferred embodimentof the invention, a web page can be downloaded by one client fromanother client;

[0021]FIG. 3 is a block diagram showing how the bandwidths ofconnections between various clients can be compared;

[0022]FIG. 4 is a block diagram of a second embodiment of the inventionthat can be used in isolation or, preferably, as a fall-back for thepreferred embodiment.

DETAILED DESCRIPTION

[0023] In the simplest existing client-server architecture of FIG. 1(a),a client 1 such as a PC running a browser makes an HTTP request 2 for aparticular downloadable file to the server 3 and the server 3 respondsby sending the requested file to the client 1. The file could, forexample, be an HTML web page 4, a .gif, .jpg or .mpg file, or other webcontent. Web pages will be used as an example of such files throughoutthe description that follows.

[0024]FIG. 1(b) shows a variant in which a proxy server 5 acts betweenthe client 1 and the server 3 to speed the average download time byreducing traffic connecting to the server 3. The client 1 makes an HTTPrequest for a particular web page via the proxy server 5. The proxyserver 5 may have a cached copy of the requested web page as a result ofa previous request for that web page. If it does, then it returns thatcached web page to the client 1, without connecting to the server 3. Ifnot, the proxy server 5 requests and downloads the requested web pagefrom the server 3, forwards it to the client 1 and advantageously keepsa copy in its cache in case a client 1 requests that page in the future.

[0025] In both of the above variants, the client 1 may cache adownloaded web page so that if a user requests the same page in future,it is not necessary to download that web page again from either a server3 or a proxy server 5. However, the user may set the browser so thatwhen a web page in cache is requested, the cached web page is comparedto the corresponding web page then available from the server 3 or theproxy server 5. If there is a difference between the ostensiblycorresponding web pages, the latest version of the web page can bedownloaded, displayed and cached in place of the previous version.

[0026] Referring now to FIG. 2 which illustrates a preferred embodimentof the invention, two clients, Client A and Client B, can access aserver 3 via the Internet. There would of course be many more clients inpractice, but just two clients are necessary to illustrate the broadinventive concept. Both Client A and Client B run browsers that havebeen enhanced in accordance with the invention, preferably bydownloading and executing a suitable plug-in on the respective clientterminals.

[0027] In the manner of the prior art, each respective terminal ofClient A and Client B holds web pages in cache as a result of previousdownloads. However, by virtue of the invention, the enhanced browsersopen the caches of their respective client terminals for access by othernetwork users. So, as the client terminals can act like proxy servers,the entire network can offer faster and more reliable downloads. Ineffect, the invention creates a network in which there are almost asmany proxy servers as there are clients. These clients that emulateproxy servers will be referred to herein as proxy server clients.

[0028] In the embodiment of FIG. 2, each proxy server client reports itscached web pages to the server 3 so that the server 3 can store in alook-up table the client location(s) at which a particular web page iscached. In use, a user at Client A requests a web page from the server 3with an HTTP request in the usual way. The server 3 either fulfils thatrequest or, if it cannot fulfil the request quickly enough, looks upwhere else that web page is cached and responds to Client A with a shortacknowledgement that points the browser of Client A to the appropriateproxy server client location. As will be explained, the acknowledgementto the requesting client can be little more than a list of IP addressesconstituting a proxy list of clients to identify the proxy server clientterminal(s) at which the requested web page is cached.

[0029] If the server 3 tells Client A that the web page requested byClient A is cached at Client B, then Client A contacts Client B anddownloads that web page from the cache in the client terminal of ClientB. Preferably, however, Client A firstly assesses and compares thebandwidths available at that time in the connections between itself andthe server 3 on the one hand and between itself and Client B on theother hand. The aim is to determine which of the available connectionswould be the faster to use, and then to select that connection so as tominimize download times and maximize the efficient use of networkresources.

[0030] In FIG. 2, the bandwidth available between Client A and Client Bhas been assessed as being greater than the bandwidth available betweenClient A and the server 3, so Client A requests the desired web pagefrom the cache of Client B. However, if the bandwidth comparison wasinstead in favor of the connection between Client A and the server 3,that connection would be used to download the web page from the server 3instead of from Client B.

[0031] By extension, the technique of comparing bandwidths can beapplied to the connections between Client A and proxy server clientsother than Client B. So, if the desired web page is cached at othernetwork resources such as other clients, the web page can be downloadedfrom one of those other resources if it would be more efficient,bandwidth-wise, to do so than to download the same web page from eitherClient B or the server 3.

[0032] The principle of resource selection is shown in FIG. 3, in whichClient A has received a proxy list 6 of client IP addresses 7 from theserver and then assesses the speed of the connection to each of theproxy server clients identified by the proxy list 6. This is done by asimple PING (Packet INternet Groper) operation that attempts to contacteach specified IP address 7 and returns the times taken to connect tothe terminals at those addresses 7.

[0033] Specifically, a PING utility sends a packet to each IP address 7and waits for, and times, the reply from each address 7. It will benoted that Client A performs the PING operation rather than the server 3because it is the connections between respective clients that matter inthis context, not the connections between the server 3 and its clients.

[0034] The response times from each pinged proxy server client arerecorded by Client A so that, once an appropriate number of proxy serverclients have been pinged, Client A can compare the recorded responsetimes and select the proxy server client with the fastest response forthe purpose of downloading the desired web page. It is also possible fora target response time to be set and for Client A to select from thefirst pinged proxy server client to meet that target. This saves ClientA continuing the process of pinging all of the proxy server clients onthe proxy list when it has already found a proxy server client whoseresponse time meets the target and so is deemed to be adequate.

[0035] It will be apparent that the pinging process set out in FIG. 3 ispreceded by an assessment of whether it is faster to download thedesired web page directly from the server 3 or to download from one ofthe proxy server clients that are caching the desired web page. Thisassessment can be done in various ways. In a first technique, forexample, the server 3 may initially attempt to respond with the desiredweb page but if it cannot respond within a predetermined period deemedto be acceptably quick, it instead responds with the aforementionedproxy list and leaves the requesting client to find and download thedesired web page from another client. This has the advantage that if theserver 3 can respond and upload the desired web page to the requestingclient quickly enough, there is no need to go through the delay ofpinging other clients at which the desired web page is cached.

[0036] The predetermined period in which the server 3 is challenged torespond need not be a fixed period of time: that period could changedynamically in accordance with the average download time for therequesting client terminal concerned. Clearly, all else being equal, aclient terminal connected to the Internet via an ordinary 56 k modemwill expect slower downloads than a terminal using a modem that canexploit a 128 k ISDN or ADSL connection. In those circumstances, it isappropriate that the server 3 senses the speed of the connection fromthe requesting client and responds to the sensed speed by tailoring thepredetermined period accordingly Specifically, the server 3 shouldshorten the predetermined period when the connection is relatively fast,and should lengthen that period when the connection is relatively slow.

[0037] A second technique for assessing the speed of server responseinvolves the server 3 invariably and immediately responding to web pagerequests with a proxy list 6 but including in that proxy list 6 the IPaddress of the server 3 itself. As a result, the server 3 is treatedlike the other resources (i.e. proxy server clients) identified by theproxy list 6 and so will be pinged along with the proxy server clientsidentified by that list. If the server 3 happens to be the fastestresource to respond, or if it is the first resource to respond within apredetermined target time, then the desired web page is downloaded fromthe server 3. Otherwise, the desired web page is downloaded from a proxyserver client whose response is found to be fastest among the variousresources identified by the proxy list 6 or whose response time is thefirst to meet the target.

[0038] This second assessment technique is currently less preferred thanthe first assessment technique because although it is more elegant interms of architecture, it incurs the overhead of downloading the proxylist 6 from the server 3 and then pinging the IP addresses 7 on thatlist.

[0039] The various proxy server client locations, expressed as theirrespective IP addresses, can be stored on the server 3 as simple textfiles and a proxy list file is associated with every web page in thelook-up table held on the server. The size of the proxy list file shouldobviously be kept within reasonable bounds, for example limited to amaximum of twenty IP addresses for each web page. This is due toconsiderations of memory capacity and download time but also hasimplications for efficient bandwidth assessment, in which it isdesirable not to ping too many client terminals.

[0040] Another approach of the invention is shown in FIG. 4, in which aclient 8 making a web page request holds a proxy list of IP addressesdefining a server 3 and also a group of other clients 9. The request ismade to the IP addresses in the proxy list, so being made to the server3 in the normal way but also being broadcast to the group of other proxyserver clients 9, to inquire as to whether they hold any of therequested information in cache. If they do, they can report back to therequesting client 8 and the web page can then be downloaded by thatclient 8 from any of the proxy server clients 9 that are caching therequested web page. Each of the client terminals on the proxy list mayin turn be connected to other proxy server client terminals 10 to whichthey can forward the request, thus forming the chain or tree structureshown in simplified form in FIG. 4.

[0041] In the FIG. 4 approach, the server 3 is not relied upon to returna list of proxy terminals. The requesting client terminal merely needsto have the IP address of one, or the IP addresses of a few, of theproxy server client terminals 9 for the chain or tree to begin. Thenecessary IP address(es) could be downloaded from a web site ordistributed with software.

[0042] It would also be possible to broadcast a short request over thenetwork to make an initial connection with a proxy server clientterminal 9 that has the requested web page in cache and responds to thebroadcast. This operation would only need to be performed once since theIP address of the responding proxy server client terminal could then bestored by the requesting client terminal for later use.

[0043] An advantage of the approach of FIG. 4 is that it is possible tofind web pages even when the server 3 is down. It could thus be afall-back to the architecture of FIG. 2, to be used only when there isno response from the original server in operation of the FIG. 2embodiment.

[0044] If appropriate, the choice between potential proxy server clientsources 9 of the cached web page can be made after the above-mentionedbandwidth comparison between the various connections to those proxyserver clients 9. As before, this involves pinging all the proxy serverclient terminals 9 on the proxy list, including the server 3, anddownloading via the fastest connection.

[0045] Again, a decision is required about whether to ping each IPaddress on the proxy list held by the requesting client 8, or simply todownload the web page from the server 3. If the FIG. 4 architecture isused as a fall back, then a timeout can be set so that if no responsehas been received from the server 3 after a predetermined (but notnecessarily fixed) period of time, then the chain or tree process isfollowed.

[0046] Another issue with pinging through a chain or tree structure isthat each proxy server client terminal 9 at each level of the structurewill ping to proxy server client terminals 10 in the next level of thestructure. So, the originally-requesting client terminal 8 will notnecessarily ping directly to the potential source of the requested webpage if that source is more than one level down the structure. In thosecircumstances, it is necessary to add another step into the process tocheck the speed between the originally-requesting client terminal 8 andthe potential source 10A, as shown in FIG. 4, to be sure that there is afast connection for downloading from the potential source 10A.

[0047] In all cases, a client advantageously reports to the server 3upon downloading and caching a web page retrieved from cache among proxyserver clients. In this way, the server can add that proxy server clientlocation to its look-up table as a further potential source of that webpage. It is similarly advantageous that a proxy server client reports tothe server 3 removal of a web page from its cache, for example during aroutine automated cache clean-up or in response to a user command. Theserver 3 can therefore delete that web page location from its look-uptable and so knows to point requesting clients elsewhere if they requestthe deleted web page.

[0048] The invention requires extra messaging but it is expected that,in most practical cases, the overhead of that extra messaging in termsof download time would still allow shorter aggregate download times thancan be achieved directly from the server.

[0049] The inventors recognize the need to ensure that no proxy serverclients are overloaded with incoming requests, broadcasts and theresulting uploads, as this would unacceptably reduce the bandwidthavailable to those clients for other, unrelated communications.Accordingly, the invention contemplates means for monitoring the proxyworkload of proxy server clients and preventing overload. This can beachieved at the client end by refusing to serve certain requests over aspecified workload limit, and/or at the server end by omitting anoverloaded proxy server client from the proxy lists sent in response torequests from other clients. Also, in the embodiment of FIG. 4, theinvention contemplates limiting the number of proxy server clients inthe group of clients that are polled and, possibly, changing the membersof that group from request to request.

[0050] Many other variations are possible within the inventive concept.For example, the server in the FIG. 2 embodiment can periodically updatethe look-up table from which the proxy lists are derived so to ensurethat the lists are optimal. This can be achieved by pinging the IPaddresses in the table from time to time, comparing their response timesand discarding the slowest for a given item of data or those that failto meet a target threshold. A possible problem with this approach isthat the connection between a server and a proxy server client does notequate to the connection between one client and another client, so theserver is not always best placed to assess client-client bandwidth.Another and possibly better approach is that when a client reports tothe server upon downloading and caching a web page received from aresource such as a proxy server client, that client tells the server theIP address of the proxy server client that provided the web page. Theserver can therefore assemble a list of the most commonly accessed andhence fastest resources and can discard the less commonly accessed andhence slowest resources, like a voting scheme in which only thoseresources proven by various requesting clients to be fastest willcontinue to survive in the proxy lists held by the server.

[0051] The present invention may be embodied in other specific formswithout departing from its essential attributes. Accordingly, referenceshould be made to the appended claims rather than to the foregoingspecific description as indicating the scope of the invention.

What is claimed is:
 1. A method of downloading or uploading data via aclient-server communications network that includes a server and aplurality of clients, each client having a local cache storing datadownloaded via the network, the method comprising: a requesting clientsending a request for data to the server; the server responding bysending the requested data to the requesting client or referring therequesting client to a proxy server client that holds the requested datain its local cache; and the requesting client then downloading therequested data from the cache of the proxy server client across thenetwork.
 2. The method of claim 1, wherein the network comprises theInternet, the clients comprise user terminals running web browsers, andthe respective local caches are associated with the browsers on the userterminals.
 3. The method of claim 1, wherein the server refers therequesting client to the proxy server client if the server is unable tosend the requested data to the requesting client within a predeterminedtarget period.
 4. The method of claim 3, wherein the predeterminedtarget period is variable.
 5. The method of claim 4, wherein thepredetermined target period is varied in accordance with the speed ofthe connection to the requesting client.
 6. The method of claim 1,wherein the server refers the requesting client to a plurality of proxyserver clients, and the requesting client chooses from that pluralitythe proxy server client from which it will download the requested dataif that data is not provided by the server.
 7. The method of claim 6,wherein the server sends the requesting client a proxy list containingthe respective addresses of the plurality of proxy server clients. 8.The method of claim 7, wherein the proxy list also contains the addressof the server.
 9. The method of claim 7, wherein the requesting clientassesses the speed of at least one connection to an address in the proxylist.
 10. The method of claim 9, wherein the requesting client assessesthe speed of the connection by pinging the associated address taken fromthe proxy list.
 11. The method of claim 9, wherein the requesting clientassesses the speeds of connections to more than one address in the proxylist, records and compares the measured speeds, and downloads therequested data from the address with the fastest connection.
 12. Themethod of claim 9, wherein the requesting client sets a targetconnection speed and downloads the requested data from the first addressin the proxy list to meet that target.
 13. The method of claim 6,wherein the server maintains a look-up table correlating items of datawith the addresses of proxy server clients that are caching that data.14. The method of claim 13, wherein proxy server clients report changesin their cache status to the server.
 15. The method of claim 14, whereinthe requesting client reports to the server that it has downloaded andis caching the requested data, and the server associates the address ofthe requesting client with the requested data in the look-up table so asto use the requesting client as a proxy server client for futurerequests by other clients for the requested data.
 16. The method ofclaim 15, wherein the server updates the look-up table by assessingconnection speeds to the proxy server client addresses in the table anddiscarding or demoting the addresses of proxy server clients to whichconnections are relatively slow.
 17. The method of claim 16, wherein theaddresses in the table are pinged and their response times are comparedwith each other or with a target threshold.
 18. The method of claim 16,wherein the requesting client reports to the server the address of theproxy server client that provided the requested data, and wherein theserver assembles an address list of the proxy server clients mostcommonly accessed to obtain the requested data.
 19. The method of claim1, wherein if the server fails to respond within a predetermined targetperiod, the requesting client broadcasts the data request over thenetwork to a plurality of other clients or connects to at least oneproxy server client whose address is on an auxiliary proxy list held bythe requesting client.
 20. The method of claim 19, wherein the auxiliaryproxy list contains the respective addresses of a plurality of proxyserver clients.
 21. The method of claim 19, wherein the requestingclient assesses the speed of at least one connection to an address inthe auxiliary proxy list.
 22. The method of claim 21, wherein therequesting client assesses the speed of the connection by pinging theassociated address taken from the auxiliary proxy list.
 23. The methodof claim 21, wherein the requesting client assesses the speeds ofconnections to more than one address in the auxiliary proxy list,records and compares the measured speeds, and downloads the requesteddata from the address with the fastest connection.
 24. The method ofclaim 23, wherein the requesting client sets a target connection speedand downloads the requested data from the first address in the auxiliaryproxy list to meet that target.
 25. The method of claim 20, wherein thedata request cascades through levels of a tree or chain client structureto a proxy server client whose address is not on the auxiliary proxylist held by the requesting client.
 26. The method of claim 25, whereinthe requesting client checks that the speed of the connection to theproxy server client meets a target connection speed before downloadingthe requested data from the proxy server client.
 27. The method of claim26, wherein the requesting client assesses the speed of the connectionby pinging the proxy server client and comparing the measured connectionspeed with the target connection speed.
 28. The method of claim 1,wherein proxy server clients maintain a workload limit and do not serverequests that would exceed that workload limit.
 29. The method of claim1, wherein the server monitors the workload of proxy server clients anddoes not refer the requesting client to proxy server clients whoseworkload is above a workload limit.
 30. A client-server communicationsnetwork comprising: a plurality of clients, each client including alocal cache storing data downloaded via the network; and a serverincluding means for responding to a client that sends a data request tothe server, wherein the server includes means for sending the requesteddata to the requesting client or referring the requesting client to aproxy server client that holds the requested data in its local cache.31. The network of claim 30, wherein the network comprises the Internet,the clients comprise user terminals running web browsers, and therespective local caches are associated with the browsers on the userterminals.
 32. The network of claim 30, wherein the server is responsiveto timeout means to refer the requesting client to the proxy serverclient if the server is unable to send the requested data to therequesting client within a predetermined target period.
 33. The networkof claim 32, wherein the timeout means includes means for varying thepredetermined target period.
 34. The network of claim 33, wherein thetimeout means includes means for sensing the speed of the connection tothe requesting client and for varying the predetermined target period inaccordance with the sensed connection speed.
 35. The network of claim30, wherein the requesting client includes selection means for choosingbetween a plurality of proxy server clients referred by the server. 36.The network of claim 35, wherein the selection means selects from aproxy list containing the respective addresses of the plurality of proxyserver clients and optionally also containing the address of the server.37. The network of claim 36, wherein the selection means comprisesbandwidth assessment means for measuring the speed of connection to anaddress in the proxy list.
 38. The network of claim 37, wherein thebandwidth assessment means includes means for pinging an address takenfrom the proxy list.
 39. The network of claim 37, wherein the bandwidthassessment means includes means for recording speeds of connections toaddresses on the proxy list, means for comparing the recorded speeds,and means for downloading the requested data from the address with thefastest recorded speed.
 40. The network of claim 37, wherein theselection means includes means for comparing a measured connection speedto an address with a target connection speed and downloading therequested data from that address if the measured connection speed meetsthe target connection speed.
 41. The network of claim 30, wherein theserver stores a look-up table correlating items of data with theaddresses of proxy server clients that are caching that data.
 42. Thenetwork of claim 41, wherein proxy server clients include means forreporting changes in their cache status to the server.
 43. The networkof claim 42, wherein the server includes means for updating the look-uptable, the updating means including means for assessing connectionspeeds to the proxy server client addresses in the table and means fordiscarding or demoting the addresses of proxy server clients to whichconnections are relatively slow.
 44. The network of claim 43, whereinthe server includes means for pinging the addresses in the table, meansfor recording their response times, and means for comparing the recordedresponse times with each other or with a target threshold.
 45. Thenetwork of claim 43, wherein the requesting client includes means forreporting to the server the address of a proxy server client thatprovides the requested data, and wherein the server includes means forassembling an address list of the proxy server clients most commonlyaccessed to obtain the requested data.
 46. The network of claim 30,wherein the requesting client includes timeout means responsive tofailure by the server to respond within a predetermined target period,and means responsive to the timeout means to broadcast a data requestover the network to a plurality of other clients or to connect to atleast one proxy server client whose address is on an auxiliary proxylist held by the requesting client.
 47. The network of claim 46, whereinthe proxy server clients are in a tree or chain structure comprising aplurality of levels.
 48. The network of claim 30, wherein the proxyserver client includes workload limit means that prevents the proxyserver client serving requests that would exceed a workload limit. 49.The network of claim 30, wherein the server includes workload limitmeans that prevents referral of the requesting client to proxy serverclients whose workload is above a workload limit.
 50. A server for aclient-server communications network, the server comprising: means forresponding to a client that sends a data request to the server; andmeans for sending the requested data to the requesting client orreferring the requesting client to a proxy server client that holds therequested data in a local cache of data downloaded via the network. 51.The server of claim 50, further comprising means responsive to timeoutmeans to refer the requesting client to the proxy server client if theserver is unable to send the requested data to the requesting clientwithin a predetermined target period.
 52. The server of claim 51,wherein the timeout means includes means for varying the predeterminedtarget period.
 53. The server of claim 52, wherein the timeout meansincludes means for sensing the speed of the connection to the requestingclient and for varying the predetermined target period in accordancewith the sensed connection speed.
 54. The server of claim 50, furthercomprising a stored look-up table correlating items of data with theaddresses of proxy server clients that are caching that data.
 55. Theserver of claim 54, further comprising means for updating the look-uptable, wherein the updating means includes means for assessingconnection speeds to the proxy server client addresses in the table, andmeans for discarding or demoting the addresses of proxy server clientsto which connections are relatively slow.
 56. The server of claim 55,further comprising means for pinging the addresses in the table, meansfor recording their response times, and means for comparing the recordedresponse times with each other or with a target threshold.
 57. Theserver of claim 50, further comprising means for assembling an addresslist of proxy server clients most commonly accessed to obtain therequested data.
 58. The server of claim 50, further comprising workloadlimit means for preventing referral of the requesting client to proxyserver clients whose workload is above a workload limit.
 59. A clientterminal for connection to a server, or a browser for such a clientterminal, comprising: selection means for choosing between a pluralityof proxy server clients if the server is unable to respond to a datarequest from the client within a target period or at all; and means fordownloading the requested data from a chosen proxy server client. 60.The terminal or browser of claim 59, wherein the selection means selectsfrom a proxy list containing the respective addresses of the pluralityof proxy server clients and optionally also containing the address ofthe server.
 61. The terminal or browser of claim 60, wherein theselection means comprises bandwidth assessment means for measuring thespeed of connection to an address in the proxy list.
 62. The terminal orbrowser of claim 61, wherein the bandwidth assessment means includesmeans for pinging an address taken from the proxy list.
 63. The terminalor browser of claim 61, wherein the bandwidth assessment means includesmeans for recording speeds of connections to addresses on the proxylist, means for comparing the recorded speeds, and means for downloadingthe requested data from the address with the fastest recorded speed. 64.The terminal or browser of claim 60, wherein the selection meansincludes means for comparing a measured connection speed to an addresswith a target connection speed and downloading the requested data fromthat address if the measured connection speed meets the targetconnection speed.
 65. The terminal or browser of claim 60, furthercomprising means for reporting changes in its cache status to theserver.
 66. The terminal or browser of claim 60, further comprisingmeans for reporting to the server the address of a proxy server clientthat provides requested data.
 67. The terminal or browser of claim 60,further comprising timeout means responsive to failure by the server torespond within a predetermined target period, and means responsive tothe timeout means to broadcast a data request over the network to aplurality of other clients or to connect to at least one proxy serverclient whose address is on an auxiliary proxy list held by therequesting client.
 68. The terminal or browser of claim 60, furthercomprising workload limit means for preventing the terminal servingrequests that would exceed a workload limit.
 69. A software plug-in fora client terminal or for a browser loaded on that client terminal andbeing programmed to adapt the terminal or the browser to perform methodsteps comprising: choosing between a plurality of proxy server clientsif a server is unable to respond to a data request from the clientterminal within a target period or at all; and downloading the requesteddata from a chosen proxy server client.